home *** CD-ROM | disk | FTP | other *** search
- #include "../../manic.h"
- #include "common.h"
-
- void
- mm_snd_playmod (int pos)
- {
- Player_Start (manicmod);
- Player_SetPosition (pos);
- }
-
- void
- mm_snd_update (void)
- {
- MikMod_Update ();
- }
-
- int
- mm_snd_active (void)
- {
- return (Player_Active ());
- }
-
- void
- mm_snd_stopmod (void)
- {
- Player_Stop ();
- }
-
- int
- mm_snd_getmodpos (void)
- {
- return (manicmod->sngpos);
- }
-
- void
- mm_snd_jump (unsigned rate)
- {
- if (!Voice_Stopped (voice1))
- Voice_Stop (voice1);
- voice1 = Sample_Play (jump, 0, 0);
- Voice_SetFrequency (voice1, rate);
- Voice_SetPanning (voice1, PAN_CENTER);
- Voice_SetVolume (voice1, 255);
- }
-
- void
- mm_snd_jump2 (unsigned rate)
- {
- if (!Voice_Stopped (voice2))
- Voice_Stop (voice2);
- voice2 = Sample_Play (jump, 0, 0);
- Voice_SetFrequency (voice2, rate);
- Voice_SetPanning (voice2, PAN_CENTER);
- Voice_SetVolume (voice2, 255);
- }
-
- void
- mm_snd_pick (unsigned rate)
- {
- if (!Voice_Stopped (voice4))
- Voice_Stop (voice4);
- voice4 = Sample_Play (pick, 0, 0);
- Voice_SetFrequency (voice4, rate);
- Voice_SetPanning (voice4, PAN_CENTER);
- Voice_SetVolume (voice4, 255);
- }
-
- void
- mm_snd_die (unsigned rate)
- {
- if (!Voice_Stopped (voice3))
- Voice_Stop (voice3);
- voice3 = Sample_Play (die, 0, 0);
- Voice_SetFrequency (voice3, rate);
- Voice_SetPanning (voice3, PAN_CENTER);
- Voice_SetVolume (voice3, 255);
- }
-
- void
- mm_snd_mute (void)
- {
- Player_Mute (MUTE_INCLUSIVE, 0, 5);
- }
-
- void
- mm_snd_unmute (void)
- {
- Player_Unmute (MUTE_INCLUSIVE, 0, 5);
- }
-
- unsigned long
- mm_snd_hitpianokeys (void)
- {
- # define KEYS4(A,B,C,D) (1<<(A) | 1<<(B) | 1<<(C) | 1<<(D))
- # define KEYS3(A,B,C) (1<<(A) | 1<<(B) | 1<<(C))
- # define KEYS2(A,B) (1<<(A) | 1<<(B))
- # define KEYS1(A) (1<<(A))
- static const unsigned long keyhit[] ={
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(19,19),
- KEYS2(19,19),
- KEYS2(21,21),
- KEYS2(21,21),
- KEYS3(21,21,3),
- KEYS3(21,21,3),
- KEYS2(14,19),
- KEYS2(14,19),
- KEYS4(26,28,14,19),
- KEYS4(26,28,14,19),
- KEYS3(26,28,0),
- KEYS3(26,28,0),
- KEYS2(14,19),
- KEYS2(14,19),
- KEYS4(24,26,14,19),
- KEYS4(24,26,14,19),
- KEYS3(24,26,3),
- KEYS3(24,26,3),
- 0,
- 0,
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(19,19),
- KEYS2(19,19),
- KEYS2(21,21),
- KEYS2(21,21),
- KEYS3(21,21,0),
- KEYS3(21,21,0),
- KEYS2(14,16),
- KEYS2(14,16),
- KEYS4(25,28,14,16),
- KEYS4(25,28,14,16),
- KEYS3(25,28,4),
- KEYS3(25,28,4),
- KEYS2(14,16),
- KEYS2(14,16),
- KEYS4(23,27,14,16),
- KEYS4(23,27,14,16),
- KEYS3(23,27,0),
- KEYS3(23,27,0),
- 0,
- 0,
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(20,20),
- KEYS2(20,20),
- KEYS2(22,22),
- KEYS2(22,22),
- KEYS3(22,22,0),
- KEYS3(22,22,0),
- KEYS2(14,16),
- KEYS2(14,16),
- KEYS4(27,29,14,16),
- KEYS4(27,29,14,16),
- KEYS3(27,29,4),
- KEYS3(27,29,4),
- KEYS2(14,16),
- KEYS2(14,16),
- KEYS4(25,27,14,16),
- KEYS4(25,27,14,16),
- KEYS3(25,27,0),
- KEYS3(25,27,0),
- 0,
- 0,
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(20,20),
- KEYS2(20,20),
- KEYS2(22,22),
- KEYS2(22,22),
- KEYS3(22,22,3),
- KEYS3(22,22,3),
- KEYS2(14,17),
- KEYS2(14,17),
- KEYS4(26,29,14,17),
- KEYS4(26,29,14,17),
- KEYS3(26,29,0),
- KEYS3(26,29,0),
- KEYS2(14,17),
- KEYS2(14,17),
- KEYS4(24,26,14,17),
- KEYS4(24,26,14,17),
- KEYS3(24,26,3),
- KEYS3(24,26,3),
- 0,
- 0,
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(19,19),
- KEYS2(19,19),
- KEYS2(21,21),
- KEYS2(21,21),
- KEYS3(24,24,3),
- KEYS3(24,24,3),
- KEYS2(14,19),
- KEYS2(14,19),
- KEYS4(28,31,14,19),
- KEYS4(28,31,14,19),
- KEYS3(28,31,0),
- KEYS3(28,31,0),
- KEYS2(14,19),
- KEYS2(14,19),
- KEYS4(26,28,14,19),
- KEYS4(26,28,14,19),
- KEYS3(26,28,3),
- KEYS3(26,28,3),
- 0,
- 0,
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(17,17),
- KEYS2(19,19),
- KEYS2(19,19),
- KEYS2(21,21),
- KEYS2(21,21),
- KEYS3(24,24,6),
- KEYS3(24,24,6),
- KEYS2(15,17),
- KEYS2(15,17),
- KEYS4(29,31,15,17),
- KEYS4(29,31,15,17),
- KEYS3(29,31,10),
- KEYS3(29,31,10),
- KEYS2(15,17),
- KEYS2(15,17),
- KEYS4(27,29,15,17),
- KEYS4(27,29,15,17),
- KEYS3(27,29,6),
- KEYS3(27,29,6),
- 0,
- 0,
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(18,18),
- KEYS2(20,20),
- KEYS2(20,20),
- KEYS2(22,22),
- KEYS2(22,22),
- KEYS3(22,22,0),
- KEYS3(22,22,0),
- KEYS4(22,22,14,16),
- KEYS4(22,22,14,16),
- KEYS4(22,22,14,16),
- KEYS4(22,22,14,16),
- KEYS3(22,22,4),
- KEYS3(21,21,4),
- KEYS4(20,20,14,16),
- KEYS4(20,20,14,16),
- KEYS4(21,21,14,16),
- KEYS4(21,21,14,16),
- KEYS4(26,26,3,16),
- KEYS4(26,26,3,16),
- KEYS4(26,26,14,17),
- KEYS4(26,26,14,17),
- KEYS4(26,26,14,17),
- KEYS4(26,26,14,17),
- KEYS3(26,26,0),
- KEYS3(26,26,0),
- KEYS4(24,22,14,17),
- KEYS4(24,22,14,17),
- KEYS4(22,20,14,17),
- KEYS4(22,20,14,17),
- KEYS3(20,18,15),
- KEYS3(20,18,15),
- KEYS2(20,18),
- KEYS2(20,18),
- KEYS2(19,17),
- KEYS2(19,17),
- KEYS4(22,20,0,16),
- KEYS4(22,20,0,16),
- KEYS2(22,20),
- KEYS2(22,20),
- KEYS2(21,19),
- KEYS2(21,19),
- KEYS4(17,14,3,12),
- KEYS2(17,14),
- KEYS2(17,14),
- KEYS3(17,14,3),
- KEYS3(17,14,3),
- KEYS3(17,14,3),
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- };
- unsigned position = manicmod->patpos + 64 * manicmod->sngpos - 13 * 64 - 56 - 1;
- return (position < (sizeof (keyhit) / sizeof (unsigned long))) ?
- keyhit[position] :
- 0;
- }